Titouan Robert et Benoît Thieurmel
29 juin 2017
install.packages("visNetwork") #Depuis le CRAN
devtools::install_github("datastorm-open/visNetwork") #Version de devhttps://github.com/datastorm-open/visNetwork http://datastorm-open.github.io/visNetwork/
Au minimum, visNetwork a besoin de deux informations
data.frame contenant les noeuds avec au moins :
iddata.frame contenant les arêtes avec au moins :
from : id du noeud de départto : id du noeud d’arrivéenodes <- data.frame(id = 1:5)
edges <- data.frame(from = c(1,2,3,4,1), to = c(1,3,4,5,5))
visNetwork(nodes, edges, height = "300px")shape), taille (size, value), couleur (color)label), tooltip (title), …?visNodesnodes <- data.frame(id = 1:5,
label = paste("Node", 1:5),
shape = c("square", "triangle", "dot", "star", "database"),
color = c("darkred", "green", "orange", "darkblue", "purple"),
shadow = c(FALSE, TRUE, FALSE, TRUE, TRUE)) arrows), taille (width, value), couleur (color)dashes), longueur (length), …?visEdgesedges <- data.frame(from = 1:6, to = c(2, 2, 3, 5, 3, 6),
label = paste0("Edge ", 1:6), length = 200,
arrows = c("to", "from", "middle", "middle;to", "from", "to"),
dashes = c(TRUE, FALSE), smooth = c(TRUE, FALSE), width = 2,
color = c("red", "darkgreen","darkblue","orange","purple","black")) title)
nodes <- data.frame(id = 1:2, label = c("SIMPLE", "HTML"),
title = c("Hi R community",
"<img src='RStudio-Ball.png'></br><b>Rencontres R 2017</b></br>
<a href='http://angletr2017.com/'>Site web</a>"))
edges <- data.frame(from = 1, to = 2, length = 200)
visNetwork(nodes, edges, height = "500px", width = "100%")?visPhysics, ?visLayout, ?visHierarchicalLayoutnodes <- data.frame(id = 1:7)
edges <- data.frame(from = c(1,1,1,1,5,5), to = c(2,3,4,5,6,7))
visNetwork(nodes, edges) %>% visEdges(arrows = "to") %>%
visHierarchicalLayout(direction = "UD", levelSeparation = 200) %>%
visPhysics(solver = "hierarchicalRepulsion",
hierarchicalRepulsion = list(nodeDistance = 200)) icon, addFontAwesome, addIonicons)visIgraph, visIgraphLayout)visLegend), titre, sous-titre, pied de pagevisNetworkProxyvisUpdate*, visRemove*, visSelect*)visFocus*, visFit)visOptions) :
selectedBy : sélection d’un ensemble de noeudshighlightNearest : highlight d’un noeud et ses voisins. Hiérarchique ou non. Adapté maintenant aux icônes/images/arêtescollapse : agrégation contrôlée des noeudsLes arbres de décisions sont utilisés quand on veut expliquer une variable cible en fonction de variables explicatives.
Il sont binaires, et obtenus par coupe successives d’une population en sous échantillons.
Sous R, utilisation de la fonction rpart.
La nouvelle fonction visTree permet de visualiser et d’explorer dynamiquement des arbres de régression et de classification.
Elle se base sur le résultat de la fonction rpart.
colorVar)colorY)shapeVar)shapeY)colorEdges)legend, legendNodesSize, legendFontSize)main, submain, footer)rules : ajout de l’ensemble des règles / du cheminsimplifyRules : simplification des règlesminNodeSize et maxNodeSize)collapse : autoriser l’agrégation d’un sous-ensemble de l’arbreupdateShape : passage d’un noeud en feuilleArbre de classification
res <- rpart(Species~., data=iris)
visTree(res, main = "Arbre de classification", legendWidth = 0.2, nodesFontSize = 16, edgesFontSize = 16, edgesFontAlign = "middle")Arbre de régression
data("diamonds")
res <- rpart(price~., data=diamonds)
visTree(res, main = "Arbre de regression", legendWidth = 0.2)res <- rpart(Statut~., data=ptitanic, control = (rpart.control(cp = 0.00005)))
visTree(res, height = "800px", nodesPopSize = TRUE, minNodeSize = 10, maxNodeSize = 30)data.frame ou des rpartvisTree sont disponiblesvisTreeEditor# sur un data.frame
net <- visTreeEditor(data = iris)
# sur un arbre
net <- visTreeEditor(data = rpart(iris))visTreeModuleUIvisTreeModuleServerdata("diamonds")
shinyApp(ui = fluidPage(visTreeModuleUI(id = "id1")),
server = function(input, output, session) {
callModule(visTreeModuleServer,
"id1",
data = reactive(diamonds))
})visTreeModuleServer & visTreeModuleUI)rpart après élagagehttps://github.com/datastorm-open/visNetwork
titouan.robert@datastorm.fr & benoit.thieurmel@datastorm.fr